Display data management techniques

ABSTRACT

Embodiments provide techniques for generation and outputting of display data. For instance, embodiments provide features involving frame data storage within display devices. Also, embodiments provide features involving the isolation of different user contexts to different frame buffers. Further, embodiments provide efficient techniques for saving frame data upon the transitioning between power states. Moreover, embodiments provide techniques for flexibly and dynamically allocating multiple display content to a physical display.

BACKGROUND

Computer applications commonly employ graphics outputs to provideinformation to users. Such information may be in the form of text,diagrams, images (moving or still), and so forth. Such information istypically output on a display device connected to a processing platform(for example, a personal computer) through a communications interface.

Conventionally, the generation of graphics involves a graphics pipelinethat renders display content in the form of frame data (or image data)based on directives received from applications. Upon generation, thisframe data is typically stored in a frame buffer memory within theprocessing platform.

After this storage occurs, the frame data may be sent to a displaydevice through a conventional display interface. Examples of suchconventional interfaces include video graphics array (VGA), digitalvisual interface (DVI), high-definition multimedia interface (HDMI),DisplayPort (DP), and analog television formats. In turn, the displaydevice then drives the display with the received frame data. This isbased on timing that may be managed by logic that is within theprocessing platform or the display device.

As systems become increasingly complex, techniques for efficient andflexible management of display data are desired.

BRIEF DESCRIPTION OF THE DRAWINGS

In the drawings, like reference numbers generally indicate identical,functionally similar, and/or structurally similar elements. The drawingin which an element first appears is indicated by the leftmost digit(s)in the reference number. The present invention will be described withreference to the accompanying drawings, wherein:

FIG. 1 is a diagram of an exemplary operational environment;

FIG. 2 is a diagram of an exemplary graphics pipeline implementation;

FIG. 3 is a flow diagram;

FIG. 4 is a diagram showing a mapping between graphics pipelines andframe buffers;

FIGS. 5 and 6 are flow diagrams;

FIG. 7 is a diagram of a frame mapping memory implementation; and

FIG. 8 is a flow diagram.

DETAILED DESCRIPTION

Embodiments provide techniques for the generation and outputting ofdisplay data. For instance, embodiments provide features involving framedata storage within display devices. Also, embodiments provide featuresinvolving the isolation of different user contexts to different framebuffers. Further, embodiments provide efficient techniques for savingframe data upon the transitioning between power states. Moreover,embodiments provide techniques for flexibly and dynamically allocatingmultiple display content to a physical display.

For instance, an apparatus may include a graphics rendering engine togenerate frame data from graphics input data, and a frame buffer controlmodule to determine whether a coupled display device includes a framebuffer. When the coupled display device includes a frame buffer, theframe buffer control module is to bypass storage of the frame data in alocal frame buffer, and is to send the frame data to the coupled displaydevice.

The frame data may include difference data between a current frame and aprevious frame. Also, the frame buffer control module may select betweena compressed transmission format and an uncompressed transmission formatbased on one or more characteristics of a communications interface (forexample, but not limited to a USB interface and/or a LAN interface) withthe coupled display device. These one or more characteristics mayinclude a capacity of the communications interface. Further, the framebuffer control module may encrypt the frame data to be sent to thedisplay device. A communications interface module to transmit the framedata across the communications interface to the coupled display device.

A method may comprise generating frame data from graphics input data;determining that a display device includes a frame buffer; and sendingthe frame data to the display device for storage in the frame buffer.This sending may include bypassing storage of the frame data in a localframe buffer. The frame data may include difference data between acurrent frame and a previous frame. Sending the frame data may includetransmitting the frame data to the display device across acommunications interface.

Also, the method may encrypt the frame data to be transmitted across thecommunications interface. Also, the method may select between acompressed transmission format and an uncompressed transmission formatbased on one or more characteristics of the communications interface.The one or more characteristics of the communications interface mayinclude a capacity of the communications interface.

An article may comprise a machine-accessible medium having storedthereon instructions that, when executed by a machine, cause the machineto: generate frame data from graphics input data; determine that adisplay device includes a frame buffer; and send the frame data to thedisplay device for storage in the frame buffer. This sending maycomprise bypassing storage of the frame data in a local frame buffer.

A system may include a processing platform, and a display device. Theprocessing platform includes a graphics rendering engine to generateframe data from graphics input data, and a frame buffer control moduleto determine whether the display device includes a frame buffer. Whenthe display device includes a frame buffer, the frame buffer controlmodule is to bypass storage of the frame data in a local frame buffer,and is to send the frame data to the display device.

A further system may include a processing platform, and a displaydevice. The processing platform has a first graphics pipeline togenerate first frame data for a first set of one or more applications;and a second graphics pipeline to generate second frame data for asecond set of one or more applications. The display device includes afirst frame buffer and a second frame buffer. The first graphicspipeline is to send the first frame data to the first frame buffer.Also, the second graphics pipeline is to send the second frame data tothe second frame buffer.

The display device may comprise a physical display and a user interface.The user interface may receive a user selection of one of the first andsecond frame buffers. The physical display is to output frame data inthe selected frame buffer.

The first set of one or more applications may correspond to a firstoperating system, and the second set of one or more applications maycorrespond to a second operating system.

The system may further include a communications interface between theprocessing platform and the display device. The processing platform maysend the first frame data across the communications interface through afirst connection; and send the second frame data across thecommunications interface through a second connection. These first andsecond connections may be isolated. The communications interface may bea USB interface or a LAN.

A further method may include: generating first frame data for a firstset of one or more applications; generating second frame data for asecond set of one or more applications; sending the first frame data toa first frame buffer in a display device; sending the second frame datato a second frame buffer in the display device; and based on a userselection, outputting one of the first frame data and the second framedata to a physical display. The first set of one or more applicationsmay correspond to a first operating system, and the second set of one ormore applications may correspond to a second operating system. Sendingthe first frame data may comprise transmitting the first frame datathrough a first connection of a communications interface, and sendingthe second frame data may comprise transmitting the second frame datathrough a second connection of the communications interface. The firstand second connections may be isolated from each other.

A display device may include a volatile storage medium to store framedata (e.g., in one or more frame buffers); a non-volatile storagemedium; and a control module to save the frame data in the non-volatilestorage medium based on a transition to a lower power state. This lowerpower state may be a sleep state. The transition to the lower powerstate may be based on a directive received from a coupled processingplatform. The control module may restore the frame data into thevolatile storage medium based on a transition from the lower power stateto a higher power state. The volatile storage medium may comprisedynamic random access memory (RAM), and the non-volatile storage mediummay comprise flash memory.

Yet a further method may include: storing frame data in a frame buffer,the frame buffer included in a display device and comprising a volatilestorage medium; based on a transition to a lower power state (e.g., asleep state), saving the frame data in a non-volatile storage mediumincluded in the display device. Also, the method may include receivingfrom a processing platform a directive for the transition to the lowerpower state. The method also may include transitioning from the lowerpower state to a higher power state, and based on the transitioning,restoring the frame data into the frame buffer.

Still a further method includes: receiving a user selection to outputone or more frame data streams to a physical display; based on the userselection, allocating one or more frame buffer storage portions of alocal storage medium, the one or more frame buffer storage portionscorresponding to the one or more frame data streams; receiving the oneor more frame data streams from the processing platform; storing the oneor more received frame data streams in a storage medium, the storing inaccordance with the allocating; and outputting the one or more receivedframe data streams to a physical display in accordance with the userselection.

Allocating the one or more frame buffer storage portions of the localstorage medium comprises generating a frame mapping table (FMT). Also,the method may comprise storing the FMT in the local storage medium. Themethod may further comprise: determining a resolution for each of theone or more frame data streams; and indicating, to the processingplatform, the resolution for each of the one or more frame data streams.

Receiving the one or more frame data streams from the processingplatform may comprise receiving each of the one or more frame datastreams in accordance with the corresponding determined resolution.Also, receiving the one or more frame data streams from the processingplatform comprises receiving the one or more frame data streams across acommunications interface. Further, each of the one or more data streamsmay be received through a corresponding connection in the communicationsinterface.

The above features are illustrative. Thus, embodiments are not limitedto these features. Further features of embodiments will become apparentfrom the following description and accompanying drawings.

Reference throughout this specification to “one embodiment” or “anembodiment” means that a particular feature, structure, orcharacteristic described in connection with the embodiment is includedin at least one embodiment. Thus, appearances of the phrases “in oneembodiment” or “in an embodiment” in various places throughout thisspecification are not necessarily all referring to the same embodiment.Furthermore, the particular features, structures, or characteristics maybe combined in any suitable manner in one or more embodiments.

FIG. 1 is a diagram of an exemplary operational environment 100, whichmay employ the techniques described herein. Environment 100 may includevarious elements. For instance, FIG. 1 shows environment 100 including aprocessing platform 101, a display device 103, and an interface 105.These elements may be implemented in any combination of hardware and/orsoftware.

Processing platform 101 includes may include one or more operatingsystems (OSs). For example, FIG. 1 shows processing platform 101 runningoperating systems 108 a and 108 b. However, any number of operatingsystems may be employed. Through these operating systems, variouscomputer applications may be executed. For example, FIG. 1 showsprocessing platform 101 executing applications, 102 a-d. Each of theseapplications may execute under a respective one of OSs 108 a-b.

Applications 102 a-d employ graphics that are output on one or moredisplays (such as on display device 103). Exemplary applications includevarious business-related applications (e.g., word processors,spreadsheet applications, presentation applications, e-mail, messagingapplications, etc.), gaming applications, video applications, and/orother applications.

Processing platform 101 may further include one or more graphicspipelines. For instance, FIG. 1 shows processing platform 101 includinggraphics pipelines 106 a and 106 b. However, any number of graphicspipelines may be employed. These graphics pipelines provide graphicsoperations for applications 102 a-d. In embodiments, this be handledthrough one or more graphics application programming interfaces (APIs)(not shown). Such APIs may provide various routines, data structures,object classes, and/or protocols that interface with graphics pipelines106 a-b. Exemplary APIs include (but are not limited to) commerciallyavailable APIs, such as OpenGL, DirectX, and others.

In particular, graphics pipelines 106 a-b perform graphics operations inresponse to directives received and processed through the graphics APIs.Exemplary operations include rendering and outputting images (frames) todisplay device 103. As described above, graphics pipelines 106 a-b maybe implemented in any combination of hardware and/or software. Thus, inembodiments, graphics pipelines 106 a-b may be implemented with one ormore graphics processing units (GPUs).

FIG. 1 shows that display device 103 includes a physical display 109, astorage medium 110, a control module 112, a user interface 113, and anon-volatile storage medium 114.

Physical display 109 provides a visual output to a user. In embodiments,this output is in the form of sequential images (or frames).Accordingly, exemplary physical displays include light emitting diode(LED) displays, liquid crystal displays (LCDs), plasma displays, andcathode ray tube (CRTs). Embodiments, however, are not limited to theseexamples.

Each of the frames output by physical display 109 may comprise multiplepixels. Data representing these pixels (e.g., color and/or intensityvalues) are stored in a frame buffer within storage medium 110. Thisdata may be referred to as “frame data”. Thus, by storing frame data,the frame buffer “drives” physical display 109.

In embodiments, display device 103 may provide multiple frame buffers.For instance, FIG. 1 shows display device 103 including frame buffers111 a and 111 b. However, any number of frame buffers may be employed.These frame buffers may be included in storage medium 110. Storagemedium 110 may comprise volatile random access memory (RAM) (e.g.dynamic RAM). However, other types of storage media, such asnon-volatile memory, may be employed.

In embodiments, display device 103 receives frame data from processingplatform 101. More particularly, graphics pipelines 106 a-b (throughinterface 105) may deliver frame data 120 to display device 103. Uponreceipt, display device 103 stores the frame data in frame buffers 111 aand/or 111 b. In turn, this stored frame data may be output by physicaldisplay 109 according to the techniques described herein.

As described above, display device 103 includes a control module 112,which directs various operations of display device 103. Such operationsinclude the reception, storage, and outputting of frame data receivedfrom processing platform 101. Accordingly, control module 112 may handlecommunications with interface 105, display timing, power managementprocedures, and so forth. Also, control module 112 may manage userinteractions through user interface 113 or through the control path 122to a virtualization control software stack.

User interface 113 allows a user to interact with display device 103.This interaction may involve the user performing various operationsdescribed herein. Such operations include (but are not limited to)selecting a frame buffer within display device 103 for output, selectinga single frame buffer output mode or a multiple frame buffer outputmode, and applying and removing operational power for display device103. User interface 113 may be implemented in various ways. For example,user interface 113 may include various buttons, keys, dials, and/orother input devices. Additionally or alternatively, user interface 113may include various menus and/or touch screen features provided throughphysical display 109.

In embodiments, display device 103 may include non-volatile storagemedium 114 (e.g., flash memory). As described in further detail below,non-volatile storage medium 114 may provide storage for the contents offrame buffers 111 a-b when display device 103 transitions between powerstates (e.g., from a higher power state to a lower power state).Alternatively, embodiments may provide such features by implementingframe buffers 111 a-b with non-volatile memory so that it is alwaysavailable and retains its content.

Interface 105 is coupled between processing platform 101 and displaydevice 103. In particular, interface 105 allows for processing platform101 to provide display device 103 with frame data 120. Interface 105also allows for processing platform 101 and display device 103 toexchange control information 122 with each other.

Interface 105 may be implemented in various ways. For example, inembodiments, interface 105 may include a “plug and play” interface, suchas a Universal Serial Bus (USB) interface (e.g., USB 1.0, USB 2.0, USB3.0, and so forth). However, various other serial and/or parallelinterfaces may be employed. Moreover, interface 105 may be implementedwith a wired local area network (LAN) (such as an Ethernet network).Further, interface 105 may be implemented with a wireless network.Exemplary wireless networks includes IEEE 802.11 wireless LAN (WiFi)networks, IEEE 802.16 WiMAX networks, and wireless personal areanetworks (WPANs) (e.g., 60 GHz WPANs). Embodiments, however, are notlimited to these examples.

In embodiments, frame buffers 111 a-b of display device 103 appear as“the display” to processes and/or operating systems within processingplatform 101. Thus, in embodiments, the processes and/or operatingsystems are not aware of physical display 109 of display device 103.Moreover, in embodiments, a user or an independent software stackmanages how frame buffers within display device 103 are actually viewedon physical display 109. For instance, embodiments provide users orsoftware the ability to page or “flip” through various frame buffers.Alternatively or additionally, embodiments, allow users or software tomap various frame buffers to various independent areas on physicaldisplay 109 so that multiple frames may be viewed at the same time.

In embodiments, the elements of FIG. 1 may be implemented as a computersystem. For example, processing platform 101 may be a personal computer,and display device 103 may be its corresponding monitor. Embodiments,however, are not limited to such arrangements.

Moreover, the elements of FIG. 1 may include one or more processors(e.g., microprocessors). For instance, processing platform may compriseany combination of microprocessors. As an example, operations describedherein (such as operations of OSs 108 a-b, applications 102 a-d, andgraphics pipelines may be provided by central processing unit(s) CPU(s)and/or graphics processing unit(s) GPU(s). These CPU(s) and/or GPU(s)may operate in accordance with instructions (e.g., software) stored in astorage medium. This storage medium (which may be included in processingplatform 101) may include memory (volatile or non-volatile), diskstorage, etc. Accordingly, display device 103 may also include one ormore processors to provide the features described herein. Suchprocessors may execute instructions (e.g., software) stored in a storagemedium. This storage medium (which may be included in display device103) may include memory (volatile or non-volatile), disk storage, etc.Further details regarding such implementations are provided below.

Operations for various embodiments may be further described withreference to the following figures and accompanying examples. Some ofthe figures may include a logic flow. Although such figures presentedherein may include a particular logic flow, it can be appreciated thatthe logic flow merely provides an example of how the generalfunctionality described herein may be implemented. Further, the givenlogic flow does not necessarily have to be executed in the orderpresented unless otherwise indicated. In addition, the given logic flowmay be implemented by hardware element(s), software element(s) executedby one or more processors, or any combination thereof. Embodiments arenot limited to this context.

The traditional graphic/video process pipeline involves display contentbeing rendered to a system frame buffer memory within a processingplatform, and then the render data (frame data) being sent to a displaydevice through a conventional display interface. Examples of suchconventional interfaces include video graphics array (VGA), digitalvisual interface (DVI), high-definition multimedia interface (HDMI),DisplayPort (DP), and analog television formats. In turn, the displaydevice then drives the display with the received frame data. This isbased on timing that may be managed by logic that is within theprocessing platform or the display device.

Recently an approach has been developed that intercepts a current framefrom a processing platform's frame buffer. The intercepted frame is readand compared to a previous frame. Based on this comparison, a difference(“delta”) is determined. This delta (which provides losslesscompression) is then sent to a display device across a common interface,such as a USB or Ethernet interface.

Upon receipt, the display device uses its internal logic to uncompressthe delta and store the uncompressed data in its own frame buffer. Inaddition, the display device may handle various operations, such aslocal display screen refresh, scaling, rotation and display on/off.Since these techniques use common interfaces, several display devicesmay be supported (limited to the processing platform's frame buffer sizeand its processing bandwidth).

Unfortunately, these intercept, read, and comparison operations (whichare performed by the processing platform) require a substantial amountof the processing platform's processing capacity. For instance, highaction video can require substantially all of a typical processingplatform's (e.g., a personal computer's) processing capacity.

Thus, this approach exhibits various drawbacks. One drawback is that theprocessing platform is unaware of the frame buffer intercepts, and doesnot take advantage of the remote frame buffer. As a result, theprocessing platform wastes processing bandwidth and power by buildingand maintaining its own frame buffer in local global memory.

A further drawback of this approach is that the interception and readingof the processing platform's frame buffer (e.g., by third party framescrapping software) is a security hole. This is because such third partysoftware could capture any frame content (such as content containingpersonal data) and send it anywhere. Thus, such frame scrapping islikely to be disallowed in the future.

Embodiments overcome such shortcomings by taking advantage of displaysthat have integrated frame buffers. For instance, in embodiments,processing platforms may have graphics pipeline(s) that comprehend aremotely located frame buffer and include the remote frame as part ofthe overall graphic process pipeline and assure content is secure fromcreation to display. The remote frame buffer may be attached through anydigital interface and if the content requires to be encrypted theappropriate encryption method of the interface will be adopted.

By including the concept of a remote frame buffer, processing platformsmay offer only the frame to frame delta data, thus eliminating the needfor the aforementioned frame to frame comparison operations. Further,embodiments may determine whether to compress or not compress such databefore sending it across the interface. This determination may be basedon the interface's available bandwidth. For instance, compression may beemployed for USB 1.0 and USB 2.0 interfaces, but not for USB 3.0interfaces.

FIG. 2 is a diagram of an exemplary implementation 200 that may beincluded in a graphics pipeline, such in as any of the graphicspipelines of FIG. 1. This implementation may include various elements.For purposes of illustration (and not limitation), FIG. 2 shows agraphics rendering engine 201, a frame buffer control module 214, aframe buffer 216, and a communications interface module 218. Theseelements may be implemented in any combination of hardware and/orsoftware.

Graphics rendering engine 201 generates frame data from graphics inputdata 220. Graphics rendering engine 201 may be implemented in variousways. FIG. 2 shows graphics rendering engine 201 including atransformation module 202, a lighting module 204, a setup module 206, arasterization module 208, a texture unit 210, a pixel processing module212

As shown in FIG. 2, graphics rendering engine 201 receives graphicsinput data 220 at transformation module 202. Graphics input data 220comprises representations of a scene in a model space (e.g., athree-dimensional space). In embodiments, graphics input data 220 may bereceived from one or more applications (e.g., through graphics API(s)).

Transformation module 202 converts coordinates in graphics input data220 from the model space to a screen space. In addition, transformationmodule 202 performs operations, such as clip testing and any clippingoperations.

Lighting module 204 computes vertex colors based on a vertex normal andpre-specified material colors. It may optionally involve a color pervertex. Setup module 206 computes the slopes of the edges of primitivesas well as the gradients (changes in the X and Y directions) of thedepth, color, and texture parameters.

Rasterization module 208 finds all valid pixel samples for primitivesand computes the correct depth, color and texture value at each samplepoint. Texture unit 210 looks up one or more texel values from texturememory and performs texture-specific blend operations on the incomingpixel color.

Pixel processing module 212 performs operations that occur once perpixel, such as depth compare, pixel blend, and other similar operations.As a result, pixel processing module 212 provides frame buffer controlmodule 214 with pixel data that represents the contents of a singlescreen image.

Frame buffer control module 214 performs operations regarding thestorage of the pixel data. For instance, frame buffer control module 214determines whether to store the pixel data locally in frame buffer 216,or whether to send the pixel data to a frame buffer in a display device(such as display device 103).

Communications interface module 218 provides access to an interface thatconnects to a display device (such as interface 105 of FIG. 1). Forinstance, communications interface module 218 may provide the interfacewith pixel data (received either from frame buffer 216, or directly fromframe buffer control module 214). Also, communications interface module218 may receive (through the interface) control information provided bythe display device. Such control data may indicate whether the displaydevice has frame buffer(s). In embodiments, the control data may be in adata structure that describes the display device's capabilities, such asan extended display identification data (EDID) structure. However, otherdata formats may be employed.

As shown in FIG. 2, communications interface module 218 provides framebuffer control module 214 with such control information. For example,FIG. 2 shows communications interface module 218 providing frame buffercontrol module 214 with a frame buffer indicator 222, and an interfacecapacity indicator 224. Frame buffer indicator 222 indicates whether thedisplay device includes a frame buffer. Interface capacity indicator 224indicates the capacity (“bandwidth) of the processing platform'sinterface with the display device. In embodiments, this indicator mayspecify the interface type (e.g. USB 1.0, USB 2.0, USB 3.0, etc.).However, other indications of capacity may be employed.

Based on these indicators, frame buffer control module 214 determineshow to handle generated frame data. For example, if the connecteddisplay device does not have an integrated frame buffer, it stores thegenerated frame data locally in frame buffer 216. Accordingly, suchlocally stored frame data will be sent to the display device inaccordance with a conventional display interface technique (e.g., VGA,DVI, HDMI, DP, television, etc.).

In contrast, if the connected display device has an integrated framebuffer, then frame buffer control module 214 sends the frame data (e.g.,a “delta” or difference from a previous frame) to the display device(via interface module 214 and the connected interface) for storage inits integrated frame buffer. This frame data is sent based on theinterface's capacity. For example, for higher capacity interfaces, theframe data (e.g., delta) may be sent in an uncompressed format. However,for lower capacity interfaces, the frame data (e.g., delta) may be sentin a compressed format. Embodiments, however, are not limited to thisexample.

Moreover, frame buffer control module 214 may encrypt the frame data tobe sent across the interface (through communications interface module218). Various encryption techniques may be employed, such as standardencryption mechanism(s) employed by the interface between the processingplatform and the display device. Accordingly, the display device (e.g.,its control module) may decrypt such data upon receipt.

FIG. 3 is a diagram of a logic flow 300, which may be representative ofoperations executed by one or more embodiments. This flow involves aprocessing platform having one or more graphics pipelines, and a displaydevice having one or more frame buffers. Thus, this flow may beperformed by the elements of FIG. 1. However, embodiments are notlimited to this context. Although FIG. 3 shows a particular sequence,other sequences may be employed. Also, the depicted operations may beperformed in various parallel and/or sequential combinations.

At a block 302, the processing platform (e.g., processing platform 101)determines whether the display device has an integrated frame buffer. Inembodiments, this may comprise receiving control information (e.g, anEDID) from the display device. If so, then operation proceeds to a block304. Otherwise, operation proceeds to a block 308.

At block 304, the processing platform determines the capacity(bandwidth) of the interface. Based on this, the processing platformdetermines a transmission format for frame data at a block 306. Forexample, for lower capacities, the processing platform may determinethat it is to employ a compressed transmission format for frame data.However, for higher capacities, the processing platform may determinethat it is to employ an uncompressed transmission format for frame data.

In embodiments, capacity may be determined by the type of interfacebeing employed. For instance, USB 1.0 and USB 2.0 interfaces may beconsidered lower capacity interfaces (that entail a compressedtransmission format). In contrast, USB 3.0 and LAN (e.g., Ethernet)interfaces may be considered higher capacity interfaces (that entail anuncompressed transmission format. Embodiments, however, are not limitedto these examples.

Thus, at a block 307, the processing platform generates frame data andsends it across the interface to the display in accordance with theselected transmission format.

As described above, block 308 is performed if the display device doesnot have an integrated frame buffer. Accordingly, at block 308, theprocessing platform generates frame data and stores it in its own framebuffer. In the context of FIG. 2, this may comprise frame buffer controlmodule 214 storing frame data generated by implementation 200 in framebuffer 216.

Following this, a block 310 is performed, in which the processingplatform sends the locally stored frame data to the display device inaccordance with a conventional display interface technique (e.g., VGA,DVI, HDMI, DP, television, etc.).

As described above, embodiments may provide multiple frame bufferswithin a display device (such as display device 103). For example, FIG.1 shows display device 103 having frame buffers 111 a and 111 b.Complete isolation between such multiple frame buffers may bemaintained. Thus, each frame buffer in the display device may beassigned to various process(es) or operation(s). For instance, eachframe buffer may be assigned to a particular OS, or to one or moreparticular applications. Further, as described above, processingplatforms (such as processing platform 101) may include multiplegraphics pipelines. In embodiments, each of such multiple pipelines maybe directed to a corresponding display device frame buffer.

FIG. 4 is a diagram showing an exemplary distribution of frame data inthe context of FIG. 1. In particular, FIG. 4 shows graphics pipeline 106a providing frame data stream 420 a to frame buffer 111 a, and graphicspipeline 106 b providing frame data stream 420 b to frame buffer 111 b.With reference to FIG. 1, these frame data streams may be part of framedata 120 and control information 122. In embodiments, frame data streams420 a and 420 b may be sent through different connections (e.g.,isolated connections) provided by interface 105. Alternatively, a sameconnection may be used for all frame data. However, within such aconnection, frame data transmissions are tagged for their appropriateframe buffers by the source (e.g., processing platform). The employedtagging scheme may be determined through user selection at the displaydevice. Thus, in embodiments, isolation may be attained by the displaydevice (e.g., a control module within the display device).

Frame data streams 420 a and 420 b may correspond to different usercontexts (e.g., different processes or operations of processing platform101). For example, frame data stream 420 may correspond to processes(e.g., applications) of a first operating system running on processingplatform 101, while frame data stream 422 may correspond to processes(e.g., applications) of a second operating system running on processingplatform 101. Also, frame data stream 420 may correspond to a firstgroup of one or more applications, while frame data stream 422 maycorrespond to a second group of one or more applications. These groupsof applications may be distributed in any manner among one or moreoperating systems. In embodiments, particular applications or operatingsystems may only be aware of their corresponding frame buffer.

Embodiments may provide isolation between frame data streams. Thisisolation may be provided through multiple connections provided by aninterface. For instance, in the context of USB interfaces, each framedata stream (and its corresponding control information) may be exchangedacross one or more USB pipes. However, other interfacing and/orisolation techniques may be employed. Moreover, each frame buffer withindisplay device 103 may be “locked” to a particular frame data stream soit cannot be reassigned without proper user credentials.

This approach may advantageously provide a convenient way for a user toswitch back and forth between different content being displayed on adisplay device. Also, this approach provides a secure path for personalcontent. For instance, this approach allows a secure OS and a User OS toshare a monitor (display device). Moreover, this approach may allow forquick switching between environments without complex memory swapping ormapping.

FIG. 5 is a diagram of a logic flow 500, which may be representative ofoperations executed by one or more embodiments. This flow involves aprocessing platform and a display device. Thus, this flow may beperformed by the elements of FIG. 1. However, embodiments are notlimited to this context. Although FIG. 5 shows a particular sequence,other sequences may be employed. Also, the depicted operations may beperformed in various parallel and/or sequential combinations.

At a block 502 a user determines an allocation of a processingplatform's operations to a plurality of frame buffers in a displaydevice. For example, the user may allocate processes of a firstoperating system to a first frame buffer, and processes of a secondoperating system to a second frame buffer.

At a block 504, isolated connections with the frame buffers areestablished for each of the allocations. For instance, one or more USBpipes may be established for each of the allocations. Alternatively, oneor more Internet protocol (IP) tunnels may be established for each ofthe allocations.

Thus, at a block 506, frame data for the allocated operations aretransferred across their corresponding connection(s) to the displaydevice. This data is received and stored at their allocated framebuffers within the display device at block 508.

At a block 510, the user selects a frame buffer for output by thedisplay. In embodiments, this may involve the user interacting with auser interface of the display device. However, embodiments are notlimited to this example. Based on this selection, the display deviceoutputs the contents of the selected frame buffer at a block 512. Asindicated in FIG. 5, operation may return to block 510, where the userchanges the frame buffer selection for output at block 512.

As described above, embodiments may provide a display device havingframe buffer(s) and a non-volatile storage medium. For example, FIG. 1shows display device 103 including frame buffers 111 a-b andnon-volatile storage medium 114. This feature allows for the effectivehandling of power states. For instance, when transitioning into a lowerpower state (e.g., a power suspend state), the display device may savethe contents of its frame buffer(s) into the non-volatile storagemedium. Conversely, upon the return to a higher power state, the displaydevice may write the saved contents back into its frame buffers.

Such features advantageously overcome shortcomings of conventionalapproaches. For example, conventional approaches do not provide suchnon-volatile storage in display devices. Moreover, for display deviceshaving frame buffers, conventional approaches do not maintain framebuffer in the corresponding processing platform. Thus, for a displaydevice to enter such a low power state (e.g., a power suspend state),the processing platform would have to read the frame buffer contentsback from the display device and save these contents in its ownnon-volatile storage medium. Unfortunately, this may consume excessiveenergy and time.

FIG. 6 is a diagram of a logic flow 600, which may be representative ofoperations executed by one or more embodiments. This flow involves aprocessing platform, a display device having one or more frame buffersand a non-volatile storage medium. Thus, this flow may be performed bythe elements of FIG. 1. However, embodiments are not limited to thiscontext. Although FIG. 6 shows a particular sequence, other sequencesmay be employed. Also, the depicted operations may be performed invarious parallel and/or sequential combinations.

At a block 602, the processing platform determines that a power statechange (e.g., a system sleep event) is to occur. In particular, theprocessing platform determines that a transition from a first (higher)power state to a second (lower) power state is to occur. Thisdetermination may be based on the occurrence of one or more triggeringconditions (e.g., user inactivity, low battery level, etc.). Inembodiments, the system sleep event may be a C3 or C4 sleep state inaccordance with the Advanced Configuration and Power Interface (ACPI)specification. Embodiments, however, are not limited to these exemplarystates.

Based on this determination, the processing platform (at a block 604)sends a power state change directive to the display device. In thecontext of FIG. 1, such a directive may be exchanged across interface105 as control information 122.

The display device receives this directive at a block 606. In turn, thedisplay device determines that operational power to its frame buffer(s)is to be suspended. Accordingly, at a block 608, the display devicesaves the contents of these buffer(s) (e.g., frame data) in itsnon-volatile storage medium. Following this, the display device mayenter the directed power state at a block 610. In the context of FIG. 1,performance of blocks 606-610 may be managed by control module 112.

At a block 612, the processing platform determines that a further powerstate change is to occur. In particular, the processing platformdetermines that a transition from the second (lower) power state into ahigher power state is to occur. In embodiments, this may be a return tothe first power state. Alternatively, this may be a transition to adifferent higher power state.

Accordingly, at a block 614, the processing platform sends a directiveto the display device. With reference to FIG. 1, this directive may besent across interface 105 as control information 122.

The display device receives this directive at a block 616. Upon receipt,the display device provides operational power to its frame buffer(s) ata block 618. In turn, at a block 620, the display device copies thesaved contents from the non-volatile memory back into its framebuffer(s). Thus, the frame data is restored in its frame buffer(s). Inthe context of FIG. 1, performance of blocks 616-620 may be managed bycontrol module 112.

As described herein, embodiments may provide display devices havingintegrated frame buffers. This may be implemented in a local displayframe memory. Also, in embodiments, a display device (e.g., displaydevice 103) may have a frame map table (FMT) to its local display framememory. The FMT may manage this memory so it can be partitioned intomultiple independent frame buffers that are mapped to a single physicaldisplay.

This feature advantageously allows a large display to be selectivelyused as one viewing experience, or as a “split screen”, providing amultiple independent displays experience. For instance, a user couldsplit the screen into half (e.g., either horizontally or vertically) toget an experience of independent displays. Moreover, the user maydynamically switch between a single display experience and a multipleindependent displays experience.

It is said that productivity increases by 50% for each monitor added toa business system. Thus, this feature advantageously provides a user toget the multi-monitor experience with one monitor. Thus, this featureadvantageously saves desk space.

Also, the FMT may include tag fields associated with blocks of thedisplay frame memory that protect blocks from each other and allows thememory to be allocated to different operating systems, applications,and/or users.

In embodiments, the FMT is managed through a user interface on thedisplay device. This is different than a window environment becausemanagement of the FMT is independent of user interfaces provided by thecorresponding processing platform (e.g., processing platform 101).

Such user selections (e.g., multi-monitor and single-monitor) entaildifferent output resolutions. Thus, to provide this feature, the displaydevice furnishes the processing platform with resolution information(based on the user's selection) across the interface connecting theseelements (e.g., interface 105). This resolution information may beprovided in various formats, such as in EDID data structure(s).

Upon receipt of this information, the processing platform (e.g., itsgraphics pipeline(s)) determines the appropriate resolution(s), andgenerates frame data in accordance with these resolution(s).

As described above, with reference to FIG. 1, display device 103includes a storage medium 110 that provides a first frame buffer 111 aand a second frame buffer 111 b. FIG. 7 is a diagram of an alternatearrangement that employs an FMT. In particular, FIG. 7 shows a storagemedium 110′, which may be used in display devices, such as displaydevice 103.

As shown in FIG. 7, storage medium 110′ includes a frame buffer space702 that may be flexibly allocated to provide one or more frame buffers.This flexible allocation is determined by FMT 704. For instance, FIG. 7shows that FMT 704 allocates frame buffer space 702 into a first framebuffer portion 706 and a second frame buffer portion 708. However, inembodiments, FMT 704 may allocate frame buffer space 702 into a singleframe buffer portion or any plurality of frame buffer portions.

FIG. 8 is a diagram of a logic flow 800, which may be representative ofoperations executed by one or more embodiments. This flow involves aprocessing platform, a display device having one or more frame buffersand a non-volatile storage medium. Thus, this flow may be performed bythe elements of FIG. 1. However, embodiments are not limited to thiscontext. Although FIG. 8 shows a particular sequence, other sequencesmay be employed. Also, the depicted operations may be performed invarious parallel and/or sequential combinations.

At a block 802, the display device receives a user selection to outputone or more display data streams to it physical display. For example,the user selection may be to output a single frame data stream (singlemonitor experience). Alternatively, the user selection may be to outputmultiple frame data streams (multiple monitors experience). Moreover,the user selection may indicate output formats (e.g., side-to-side,top-to-bottom tiling, etc.). This user selection may be received throughthe display device's user interface (e.g., through user interface 113 ofFIG. 1).

Based on the user selection, the display device allocates (at a block804) frame buffer storage portions within its storage medium. Forexample, in the context of FIG. 7, these portions may be within framebuffer space 702. Further, this allocation may involve generating anFMT.

At a block 806, the display device indicates information to theprocessing device regarding the user selection. This information mayindicate the selected frame data streams. Also, this information mayindicate resolution information (based on the user selection). Inembodiments, this information may be sent across the interface betweenthe processing platform and the display device (e.g., interface 105).

At a block 807, the processing platform receives the information sent atblock 806. Based on this information, the processing platform generatesthe selected frame data stream(s) in accordance with the receivedindications (e.g., in accordance with the indicated resolution(s)).Also, the processing platform sends the selected frame data streamsacross the interface. As described herein, each frame data stream may besent across a corresponding connection (e.g., isolated connection)provided by the interface.

The display device receives the selected frame data streams at a block808. In turn, the display device stores the frame data in thecorresponding allocated portion(s) of its storage medium at a block 810.

From this, the display device outputs the selected frame data stream(s)in accordance with the user selection at a block 812.

As described herein, various embodiments may be implemented usinghardware elements, software elements, or any combination thereof.Examples of hardware elements may include processors, microprocessors,circuits, circuit elements (e.g., transistors, resistors, capacitors,inductors, and so forth), integrated circuits, application specificintegrated circuits (ASIC), programmable logic devices (PLD), digitalsignal processors (DSP), field programmable gate array (FPGA), logicgates, registers, semiconductor device, chips, microchips, chip sets,and so forth.

Examples of software may include software components, programs,applications, computer programs, application programs, system programs,machine programs, operating system software, middleware, firmware,software modules, routines, subroutines, functions, methods, procedures,software interfaces, application program interfaces (API), instructionsets, computing code, computer code, code segments, computer codesegments, words, values, symbols, or any combination thereof.

Some embodiments may be implemented, for example, using a tangiblemachine-readable medium (storage medium) or article which may store aninstruction or a set of instructions that, if executed by a machine, maycause the machine to perform a method and/or operations in accordancewith the embodiments. Such a machine may include, for example, anysuitable processing platform, computing platform, computing device,processing device, computing system, processing system, computer,processor, or the like, and may be implemented using any suitablecombination of hardware and/or software.

The machine-readable medium (storage medium) or article may include, forexample, any suitable type of memory unit, memory device, memoryarticle, memory medium, storage device, storage article, storage mediumand/or storage unit, for example, memory, removable or non-removablemedia, erasable or non-erasable media, writeable or re-writeable media,digital or analog media, hard disk, floppy disk, Compact Disk Read OnlyMemory (CD-ROM), Compact Disk Recordable (CD-R), Compact DiskRewriteable (CD-RW), optical disk, magnetic media, magneto-opticalmedia, removable memory cards or disks, various types of DigitalVersatile Disk (DVD), a tape, a cassette, or the like. The instructionsmay include any suitable type of code, such as source code, compiledcode, interpreted code, executable code, static code, dynamic code,encrypted code, and the like, implemented using any suitable high-level,low-level, object-oriented, visual, compiled and/or interpretedprogramming language.

Some embodiments may be described using the expression “coupled” and“connected” along with their derivatives. These terms are not intendedas synonyms for each other. For example, some embodiments may bedescribed using the terms “connected” and/or “coupled” to indicate thattwo or more elements are in direct physical or electrical contact witheach other. The term “coupled,” however, may also mean that two or moreelements are not in direct contact with each other, but yet stillco-operate or interact with each other.

While various embodiments of the present invention have been describedabove, it should be understood that they have been presented by way ofexample only, and not in limitation. Accordingly, it will be apparent topersons skilled in the relevant art that various changes in form anddetail can be made therein without departing from the spirit and scopeof the invention. Thus, the breadth and scope of the present inventionshould not be limited by any of the above-described exemplaryembodiments, but should be defined only in accordance with the followingclaims and their equivalents.

The invention claimed is:
 1. A method comprising: generating frame datafrom graphics input data; determining if a display device includes aframe buffer; sending the frame data to the display device for storagein the frame buffer; determining an allocation of a processingplatform's operations to a plurality of frame buffers in a displaydevice by allocating processes of a first operating system to a firstframe buffer and processes of a second operation system to a secondframe buffer; selectively allocating a frame buffer space into aselected number of spaces to implement a selected number of independentframe buffers within said frame buffer space; saving frame buffercontents to a non-volatile storage medium in response to receiving apower state change; and copying saved contents from said non-volatilestorage medium back into the frame buffer of the display device inresponse to a subsequent power state change.
 2. The method of claim 1,wherein the frame data comprises difference data between a current frameand a previous frame.
 3. The method of claim 1, wherein said sendingcomprises transmitting the frame data to the display device across acommunications interface.
 4. The method of claim 1, further comprising:encrypting the frame data to be transmitted across the communicationsinterface.
 5. The method of claim 1, further comprising: selectingbetween a compressed transmission format and an uncompressedtransmission format based on one or more characteristics of thecommunications interface.
 6. The method of claim 1, wherein the one ormore characteristics of the communications interface include a capacityof the communications interface.
 7. A non-transitory machine, accessiblemedium having stored thereon instructions that, when executed by amachine, cause the machine to: generate frame data from graphics inputdata; determine if a display device includes a frame buffer; send theframe data to the display device for storage in the frame buffer,wherein said sending comprises bypassing storage of the frame data in alocal frame buffer and determine an allocation of a processingplatform's operations to a plurality of frame buffers in a displaydevice by allocating processes of a first operating system to a firstframe buffer and processes of a second operation system to a secondframe buffer; selectively allocate a frame buffer space into a selectednumber of spaces to implement a selected number of independent framebuffers within said frame buffer space; save frame buffer contents to anon-volatile storage medium in response to receiving a power statechange; and copy saved contents from said non-volatile storage mediumback into the frame buffer of the display device in response to asubsequent power state change.
 8. The medium of claim 7, wherein theframe data comprises difference data between a current frame and aprevious frame.
 9. The medium of claim 7, wherein the instructions, whenexecuted by the machine, further cause the machine to: transmit theframe data to the display device across a communications interface. 10.The medium of claim 7, wherein the instructions, when executed by themachine, further cause the machine to: encrypt the frame data to betransmitted across the communications interface.
 11. The medium of claim7, wherein the instructions, when executed by the machine, further causethe machine to: select between a compressed transmission format and anuncompressed transmission format based on one or more characteristics ofthe communications interface.
 12. A system, comprising: a processingplatform, and a display device; a non-volatile storage medium coupled tosaid display device; wherein the processing platform includes a graphicsrendering engine to generate frame data from graphics input data, and aframe buffer control module to determine whether the display deviceincludes a frame buffer, determine an allocation of a processingplatform's operations to a plurality of frame buffers in a displaydevice by allocating processes of a first operating system to a firstframe buffer and processes of a second operating system to a secondframe buffer, and selectively allocate a frame buffer space into aselected number of spaces to implement a selected number of independentframe buffers within said frame buffer space; wherein, when the displaydevice includes a frame buffer, the frame buffer control module is tobypass storage of the frame data in a local frame buffer, and is to sendthe frame data to the display device; and said display device to saveframe buffer contents in the non-volatile storage medium in response toreceiving a power state change and said display device to copy savedcontents from said non-volatile storage medium back into the framebuffer of the display device in response to a subsequent power statechange.
 13. The system of claim 12, wherein the frame data comprisesdifference data between a current frame and a previous frame.
 14. Thesystem of claim 12, wherein the frame buffer control module is to selectbetween a compressed transmission format and an uncompressedtransmission format based on one or more characteristics of acommunications interface with the coupled display device.
 15. The systemof claim 14, wherein the one or more characteristics of thecommunications interface include a capacity of the communicationsinterface.
 16. The system of claim 14, further comprising acommunications interface module to transmit the frame data across thecommunications interface to the coupled display device.
 17. The systemof claim 14, wherein the communications interface is a Universal SerialBus (USB) interface.
 18. The system of claim 14, wherein thecommunications interface is a local area network (LAN) interface. 19.The system of claim 12, wherein the frame buffer control module is toencrypt the frame data to be sent to the display device.